import { createVNode, render, ref, nextTick } from "vue";
import BaseDialog from "/@/templates/BaseDialog.vue";

import app from "/@/main"; // 导入 Vue 实例
function open(options = {}) {
  const dialogRef = ref(null);
  const { content, title,dialogType,onClose, callBack,config } = options;
  // 创建一个新的 div 作为容器
  const container = document.createElement("div");
  document.body.appendChild(container);
  // 使用 createVNode 创建虚拟节点
  const vnode = createVNode(
      BaseDialog,
    {
      visible: true,
      onClose: () => {
        // 调用 onClose 回调
        if (onClose) onClose();
        // 关闭时移除组件并销毁虚拟节点
        render(null, container); // 清除组件
        document.body.removeChild(container); // 移除 DOM 节点
      },
    },
    {
      default: () => "", // 插槽内容
    }
  );


    vnode.appContext = app._context;


    render(vnode, container);
  dialogRef.value = vnode.component?.exposed; // 通过代理访问组件的 ref 和方法
  //   dialogRef.value.merge(content.)
  dialogRef.value.loadComponent(
    content.name,
    {
      title: title,
      query: content.query,
      top: content.top,
      fullscreen: content.fullscreen,

      dialogType: dialogType,
      defaultList: content.defaultList,
      pageConfig: config
    },
    (data: any) => {
      if (callBack) {
        callBack(data);
      }
    }
  );
}
const VDialog = {
  open,
};
export default VDialog;
